#!/bin/bash
#缺少2个命令行参数$1、$2
if [ -z $1 ];then
	echo -e "mv: 缺少了文件操作数
Try 'mv --help' for more information."
exit 0
#缺少了命令行参数$2
elif [ -z $2 ];then
	echo -e "mv: 在\"$1\" 后缺少了要操作的目标文件
Try 'mv --help' for more information."	
exit 0
#命令行参数2对应的文件或文件不存在，打印下面提示
elif [ ! -e $1 ];then
	echo -e "mv: 无法获取\"$1\" 的文件状态(stat): 没有那个文件或目录"
        exit 0
fi

#命令行参数都有,但${2}不存在
if [ ! -e $2 ] ;then
    echo "第二个参数不存在，是更名操作"
    #改名的是目录
    if [ -d $1 ];then
    echo "参数1是目录"
        cp -R $1 $2
        rm -rf $1
    fi
    #如果改名的是文件，然后
    if [ -f $1 ];then
        echo "参数1是文件"
        cp $1 $2
        rm -rf $1
    fi

#如果第二参数存在且是目录
#也可以只写[ -d $2 ]
#elif [ -e $2 ] && [ -d $2 ];then
elif [ -d $2 ];then
   
    echo "第二个参数是存在的，且是目录，是移动操作"
    #如果第一个参数是个目录，首先判断目标目录中是否有这个目录，如果有，询问是否覆盖
    if  [ -d $1 ];then
		
            flag=0 #判断目标目录中是否有文件与$1重名，用来询问是否覆盖
		echo $flag
	    for i in $(ls $2);do
		echo $i
		if [ $i == $1 ];then
		    let flag+=1
		fi	
	    done
		echo "此时flag的值为$flag"
            if [ $flag == 0 ];then   #没有重名的直接复制
		cp -R $1 $2
		rm -rf $1
	    else
            	read -p "mv:是否覆盖\"$2/$1\"?" judge
            	if [ $judge == 'y' ] || [ $judge == "yes" ];then
               		 cp -rf  $1  $2
			 rm -rf $1
            	else
			 exit 0
            	fi
            fi

    fi
#        let a=${#${1}}
#	IFS=*
#	transfer=`echo $1|sed -e 's/^[ \t]*//g' `
#        let b=${#transfer}
#	if ((a==b));then
#		echo "不是将$1下所有文件都放到目录$2中"
#        elif(( a > b ));
#		#将$1下所有文件放到目录2中
#		echo "将$1下所有文件放到目录2中"
#		for i in $(ls $1);do
#			
#		done
#	fi
#	a=$(ls ${1})
#        echo $a
#	#a=${a/*//}	
#	echo $1
#        if [ -e $2"/"$1 ];then
#        	read -p "mv:是否覆盖\"$1\"?" judge
#       		 if [ judge == 'y' ] || [ judge == "yes" ];then
#            	cp -R  $1 $2
#        	else
#			exit 0	
# 		fi
# 	fi
#将目录移动到文件里
elif [ -e $2 ]&& [ ! -d $2 ]&&[ -d $1 ];then
    read -p "mv：是否覆盖\"$2\"？"  choice
    if [ $choice == "y" ] || [ $choice == "yes" ] ;then
    echo "mv: 无法以目录\"$1\" 来覆盖非目录\"3\"" 
    else
 	exit 0
    fi 
#文件覆盖已存在文件
elif [ -f $1 ] && [ -e $2 ]&& [ ! -d $2 ];then
    read -p "mv：是否覆盖\"3\"？" choice
    if [ $choice == "y" ] || [ $choice == "yes" ] ;then
      cp $1 $2
      rm -rf $1
    else
      exit 0
    fi
       
fi
